Miscellaneous integration rules for algebraic functions

1:  ∫u(((c (((d (((a+b x))^n)))^q)))^p)dx  when p∉ℤ ∧ q∉ℤ

Derivation: Piecewise constant extraction

Basis: (∂_x)((((c (((d (((a+b x))^n)))^q)))^p)/(((a+b x))^(n p q)))==0

Note: This should be generalized for arbitrarily deep nesting of powers.

Rule: If  p∉ℤ ∧ q∉ℤ, then

∫u(((c (((d (((a+b x))^n)))^q)))^p)dx  ⟶  ((((c (((d (((a+b x))^n)))^q)))^p)/(((a+b x))^(n p q)))∫u (((a+b x))^(n p q))dx

Program code:

Int[u_.*(c_.*(d_*(a_.+b_.* x_))^q_)^p_,x_Symbol] :=
  (c*(d*(a+b*x))^q)^p/(a+b*x)^(p*q)*Int[u*(a+b*x)^(p*q),x] /;
FreeQ[{a,b,c,d,q,p},x] && Not[IntegerQ[q]] && Not[IntegerQ[p]]

Int[u_.*(c_.*(d_.*(a_.+b_.* x_)^n_)^q_)^p_,x_Symbol] :=
  (c*(d*(a+b*x)^n)^q)^p/(a+b*x)^(n*p*q)*Int[u*(a+b*x)^(n*p*q),x] /;
FreeQ[{a,b,c,d,n,q,p},x] && Not[IntegerQ[q]] && Not[IntegerQ[p]]

2.  ∫u (((c (((a+b (x^n)))^q)))^p)dx

1:  ∫u (((c (((a+b (x^n)))^q)))^p)dx  when  a≥0

Derivation: Piecewise constant extraction

Basis: (∂_x)((((c (((a+b (x^n)))^q)))^p)/(((a+b (x^n)))^(p q)))==0

Rule: If  a≥0, then

∫u (((c (((a+b (x^n)))^q)))^p)dx  ⟶  ((((c (((a+b (x^n)))^q)))^p)/(((a+b (x^n)))^(p q))) ∫u (((a+b (x^n)))^(p q)) dx

Program code:

Int[u_.*(c_.*(a_.+b_.*x_^n_.)^q_)^p_,x_Symbol] :=
  Simp[(c*(a+b*x^n)^q)^p/(a+b*x^n)^(p*q)]*Int[u*(a+b*x^n)^(p*q),x] /;
FreeQ[{a,b,c,n,p,q},x] && GeQ[a,0]

2:  ∫u (((c (((a+b (x^n)))^q)))^p)dx  when  a≱0

Derivation: Piecewise constant extraction

Basis: (∂_x)((((c (((a+b (x^n)))^q)))^p)/(((1+((b (x^n))/a)))^(p q)))==0

Rule: If  a≱0, then

∫u (((c (((a+b (x^n)))^q)))^p)dx  ⟶  ((((c (((a+b (x^n)))^q)))^p)/(((1+((b (x^n))/a)))^(p q))) ∫u (((1+((b (x^n))/a)))^(p q)) dx

Program code:

Int[u_.*(c_.*(a_+b_.*x_^n_.)^q_)^p_,x_Symbol] :=
  Simp[(c*(a+b*x^n)^q)^p/(1+b*x^n/a)^(p*q)]*Int[u*(1+b*x^n/a)^(p*q),x] /;
FreeQ[{a,b,c,n,p,q},x] && Not[GeQ[a,0]]

3.  ∫u (((e (((a+b (x^n)))^q) (((c+d (x^n)))^r)))^p)dx

1.  ∫u (((e (((a+b (x^n)))^q) (((c+d (x^n)))^r)))^p)dx  when  r==q ∧ q∈ℤ

1:  ∫u (((e (((a+b (x^n)))^q) (((c+d (x^n)))^q)))^p)dx  when  q∈ℤ ∧ b c-a d==0

Derivation: Algebraic simplification

Basis: If  q∈ℤ ∧ b c-a d==0, then (((a+b (x^n)))^q) (((c+d (x^n)))^q)==((((d/b)))^q) (((a+b (x^n)))^(2 q))

Rule: If  q∈ℤ ∧ b c-a d==0, then

∫u (((e (((a+b (x^n)))^q) (((c+d (x^n)))^q)))^p)dx  ⟶  ∫u (((e ((((d/b)))^q) (((a+b (x^n)))^(2 q))))^p) dx

Program code:

Int[u_.*(e_.*(a_.+b_.*x_^n_.)^q_.*(c_+d_.*x_^n_.)^q_.)^p_,x_Symbol] :=
  Int[u*(e*(d/b)^q*(a+b*x^n)^(2*q))^p,x] /;
FreeQ[{a,b,c,d,e,n,p},x] && IntegerQ[q] && EqQ[b*c-a*d,0]

2:  ∫u (((e (((a+b (x^n)))^q) (((c+d (x^n)))^q)))^p)dx  when  q∈ℤ ∧ b c+a d==0

Derivation: Algebraic simplification

Basis: If  q∈ℤ ∧ b c+a d==0, then (((a+b (x^n)))^q) (((c+d (x^n)))^q)==(((-(((a^2) d)/b)+b d (x^(2 n))))^q)

Rule: If  q∈ℤ ∧ b c+a d==0, then

∫u (((e (((a+b (x^n)))^q) (((c+d (x^n)))^q)))^p)dx  ⟶  ∫u (((e (((-(((a^2) d)/b)+b d (x^(2 n))))^q)))^p) dx

Program code:

Int[u_.*(e_.*(a_.+b_.*x_^n_.)^q_*(c_+d_.*x_^n_.)^q_)^p_,x_Symbol] :=
  Int[u*(e*(-a^2*d/b+b*d*x^(2*n))^q)^p,x] /;
FreeQ[{a,b,c,d,e,n,p},x] && IntegerQ[q] && EqQ[b*c+a*d,0]

x:  ∫u ((((a+b (x^n)) (c+d (x^n))))^p)dx  when  b+d==0 ∧ a>0 ∧ c>0

Derivation: Algebraic simplification

Basis: If  a>0 ∧ c>0, then ((((a+z) (c-z)))^p)==(((a+z))^p) (((c-z))^p)

Note: This optional rule sometimes increase the number of integration steps required.

Rule: If  b+d==0 ∧ a>0 ∧ c>0, then

∫u ((((a+b (x^n)) (c+d (x^n))))^p)dx  ⟶  ∫u (((a+b (x^n)))^p) (((c+d (x^n)))^p) dx

Program code:

(* Int[u_.*((a_.+b_.*x_^n_.)*(c_+d_.*x_^n_.))^p_,x_Symbol] :=
  Int[u*(a+b*x^n)^p*(c+d*x^n)^p,x] /;
FreeQ[{a,b,c,d,n,p},x] && EqQ[b+d,0] && GtQ[a,0] && GtQ[c,0] *)

3:  ∫u (((e (a+b (x^n)) (c+d (x^n))))^p)dx

Derivation: Algebraic expansion

Basis: e (a+b (x^n)) (c+d (x^n))==a c e+(b c+a d) e (x^n)+b d e (x^(2 n))

Rule:

∫u (((e (a+b (x^n)) (c+d (x^n))))^p)dx  ⟶  ∫u (((a c e+(b c+a d) e (x^n)+b d e (x^(2 n))))^p) dx

Program code:

Int[u_.*(e_.*(a_.+b_.*x_^n_.)*(c_+d_.*x_^n_.))^p_,x_Symbol] :=
  Int[u*(a*c*e+(b*c+a*d)*e*x^n+b*d*e*x^(2*n))^p,x] /;
FreeQ[{a,b,c,d,e,n,p},x]

2.  ∫u (((e ((a+b (x^n))/(c+d (x^n)))))^p)dx

1:  ∫u (((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  when  b c-a d==0

Derivation: Algebraic simplification

Basis: If  b c-a d==0, then e ((a+b z)/(c+d z))==((b e)/d)

Rule: If  b c-a d==0, then

∫u (((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  ⟶  (((((b e)/d)))^p)∫udx

Program code:

Int[u_.*(e_.*(a_.+b_.*x_^n_.)/(c_+d_.*x_^n_.))^p_,x_Symbol] :=
  (b*e/d)^p*Int[u,x] /;
FreeQ[{a,b,c,d,e,n,p},x] && EqQ[b*c-a*d,0]

2:  ∫u (((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  when  b d e>0 ∧ c<((a d)/b)

Derivation: Algebraic simplification

Basis: If  b d e>0 ∧ ((a d)/b)≤c, then (((e((a+b z)/(c+d z))))^p)==((((e(a+b z)))^p)/(((c+d z))^p))

Rule: If  b d e>0 ∧ c<((a d)/b), then

∫u (((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  ⟶  ∫((u (((a e+b e (x^n)))^p))/(((c+d (x^n)))^p))dx

Program code:

Int[u_.*(e_.*(a_.+b_.*x_^n_.)/(c_+d_.*x_^n_.))^p_,x_Symbol] :=
  Int[u*(a*e+b*e*x^n)^p/(c+d*x^n)^p,x] /;
FreeQ[{a,b,c,d,e,n,p},x] && GtQ[b*d*e,0] && GtQ[c-a*d/b,0]

x.  ∫u (((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  when  b c+a d==0 ∧ ((b e)/d)>0     Necessary???

1:  ∫u (((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  when  b c+a d==0 ∧ ((b e)/d)>0 ∧ c>0

Derivation: Algebraic expansion

Basis: If  b c+a d==0 ∧ ((b e)/d)>0 ∧ c>0, then (((((a+b z)/(c+d z))))^p)==((((a+b z))^p)/(((c+d z))^p))

Rule: If  b c+a d==0 ∧ ((b e)/d)>0 ∧ c>0, then

∫u (((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  ⟶  ∫u ((((a e+b e (x^n)))^p)/(((c+d (x^n)))^p)) dx

Program code:

(* Int[u_.*(e_.*(a_.+b_.*x_^n_.)/(c_+d_.*x_^n_.))^p_,x_Symbol] :=
  Int[u*(a*e+b*e*x^n)^p/(c+d*x^n)^p,x] /;
FreeQ[{a,b,c,d,e,n,p},x] && EqQ[b*c+a*d,0] && GtQ[b*e/d,0] && GtQ[c,0] *)

2:  ∫u (((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  when  b c+a d==0 ∧ ((b e)/d)>0 ∧ c<0

Derivation: Algebraic expansion

Basis: If  b c+a d==0 ∧ ((b e)/d)>0 ∧ c<0, then (((((a+b z)/(c+d z))))^p)==((((-a-b z))^p)/(((-c-d z))^p))

Rule: If  b c+a d==0 ∧ ((b e)/d)>0 ∧ c<0, then

∫u (((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  ⟶  ∫u ((((-a e-b e (x^n)))^p)/(((-c-d (x^n)))^p)) dx

Program code:

(* Int[u_.*(e_.*(a_.+b_.*x_^n_.)/(c_+d_.*x_^n_.))^p_,x_Symbol] :=
  Int[u*(-a*e-b*e*x^n)^p/(-c-d*x^n)^p,x] /;
FreeQ[{a,b,c,d,e,n,p},x] && EqQ[b*c+a*d,0] && GtQ[b*e/d,0] && LtQ[c,0] *)

3:  ∫(((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  when  (1/n)∈ℤ

Derivation: Integration by substitution

Basis: If (1/n)∈ℤ ∧ q∈(SuperPlus[ℤ]), then (((e ((a+b (x^n))/(c+d (x^n)))))^p)==((q e(b c-a d))/n)Subst[(( (x^(q(p+1)-1))(((-a e+c (x^q)))^((1/n)-1)))/(((b e-d (x^q)))^((1/n)+1))),x,(((e ((a+b (x^n))/(c+d (x^n)))))^(1/q))](∂_x)(((e ((a+b (x^n))/(c+d (x^n)))))^(1/q))

Rule: If (1/n)∈ℤ, let q=Denominator[p],  then

∫(((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  ⟶  ((q e(b c-a d))/n) Subst[∫(( (x^(q(p+1)-1))(((-a e+c (x^q)))^((1/n)-1)))/(((b e-d (x^q)))^((1/n)+1)))dx,x,(((e ((a+b (x^n))/(c+d (x^n)))))^(1/q))]

Program code:

Int[(e_.*(a_.+b_.*x_^n_.)/(c_+d_.*x_^n_.))^p_,x_Symbol] :=
  With[{q=Denominator[p]},
  q*e*(b*c-a*d)/n*Subst[
    Int[x^(q*(p+1)-1)*(-a*e+c*x^q)^(1/n-1)/(b*e-d*x^q)^(1/n+1),x],x,(e*(a+b*x^n)/(c+d*x^n))^(1/q)]] /;
FreeQ[{a,b,c,d,e},x] && FractionQ[p] && IntegerQ[1/n]

4.  ∫(((f x))^m) (((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  when  ((m+1)/n)∈ℤ

1:  ∫(x^m)(((e((a+b x)/(c+d x))))^p)dx  when  m∈ℤ ∧ p∈𝔽

Derivation: Integration by substitution

Basis: If  m∈ℤ ∧ q∈(SuperPlus[ℤ]), then (x^m)(((e((a+b x)/(c+d x))))^p)==q e(b c-a d) Subst[(( (x^(q(p+1)-1))(((-a e+c (x^q)))^m))/(((b e-d (x^q)))^(m+2))),x,(((e((a+b x)/(c+d x))))^(1/q))](∂_x)(((e((a+b x)/(c+d x))))^(1/q))

Rule: If  m∈ℤ ∧ p∈𝔽, let q=Denominator[p],  then

∫(x^m)(((e ((a+b x)/(c+d x))))^p)dx  ⟶  q e (b c-a d) Subst[∫(( (x^(q(p+1)-1))(((-a e+c (x^q)))^m))/(((b e-d (x^q)))^(m+2)))dx,x,(((e ((a+b x)/(c+d x))))^(1/q))]

Program code:

Int[x_^m_.*(e_.*(a_.+b_.*x_)/(c_+d_.*x_))^p_,x_Symbol] :=
  With[{q=Denominator[p]},
  q*e*(b*c-a*d)*Subst[Int[x^(q*(p+1)-1)*(-a*e+c*x^q)^m/(b*e-d*x^q)^(m+2),x],x,(e*(a+b*x)/(c+d*x))^(1/q)]] /;
FreeQ[{a,b,c,d,e,m},x] && FractionQ[p] && IntegerQ[m]

2.  ∫(((f x))^m) (((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  when  ((m+1)/n)∈ℤ

1:  ∫(x^m) (((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  when ((m+1)/n)∈ℤ

Derivation: Integration by substitution

Basis: If ((m+1)/n)∈ℤ, then (x^m)F[(x^n)]==(1/n) Subst[(x^(((m+1)/n)-1)) F[x],x,(x^n)] (∂_x)(x^n)

Rule: If ((m+1)/n)∈ℤ, then

∫(x^m) (((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  ⟶  (1/n) Subst[∫(x^(((m+1)/n)-1))(((e((a+b x)/(c+d x))))^p)dx,x,(x^n)]

Program code:

Int[x_^m_.*(e_.*(a_.+b_.*x_^n_.)/(c_+d_.*x_^n_.))^p_,x_Symbol] :=
  1/n*Subst[Int[x^(Simplify[(m+1)/n]-1)*(e*(a+b*x)/(c+d*x))^p,x],x,x^n] /;
FreeQ[{a,b,c,d,e,m,n,p},x] && IntegerQ[Simplify[(m+1)/n]]

2:  ∫(((f x))^m) (((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  when  ((m+1)/n)∈ℤ

Derivation: Piecewise constant extraction

Basis: (∂_x)((((c x))^m)/(x^m))==0

Rule: If ((m+1)/n)∈ℤ, then

∫(((f x))^m) (((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  ⟶  ((((c x))^m)/(x^m))∫(x^m) (((e ((a+b (x^n))/(c+d (x^n)))))^p)dx

Program code:

Int[(f_*x_)^m_*(e_.*(a_.+b_.*x_^n_.)/(c_+d_.*x_^n_.))^p_,x_Symbol] :=
  Simp[(c*x)^m/x^m]*Int[x^m*(e*(a+b*x^n)/(c+d*x^n))^p,x] /;
FreeQ[{a,b,c,d,e,f,m,n,p},x] && IntegerQ[Simplify[(m+1)/n]]

5:  ∫(Subscript[P, x]^r)(((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  when  (1/n)∈ℤ ∧ r∈ℤ

Derivation: Integration by substitution

Basis: If (1/n)∈ℤ ∧ q∈(SuperPlus[ℤ]), then F[x](((e ((a+b (x^n))/(c+d (x^n)))))^p)==((q e(b c-a d))/n)Subst[(( (x^(q(p+1)-1))(((-a e+c (x^q)))^((1/n)-1)))/(((b e-d (x^q)))^((1/n)+1)))F[(( (((-a e+c (x^q)))^(1/n)))/(((b e-d (x^q)))^(1/n)))],x,(((e ((a+b (x^n))/(c+d (x^n)))))^(1/q))](∂_x)(((e ((a+b (x^n))/(c+d (x^n)))))^(1/q))

Rule: If (1/n)∈ℤ, let q=Denominator[p],  then

∫(Subscript[P, x]^r)(((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  ⟶  ((q e(b c-a d))/n) Subst[∫(( (x^(q(p+1)-1))(((-a e+c (x^q)))^((1/n)-1)))/(((b e-d (x^q)))^((1/n)+1)))((Subst[(Subscript[P, x]),x,(( (((-a e+c (x^q)))^(1/n)))/(((b e-d (x^q)))^(1/n)))])^r)dx,x,(((e ((a+b (x^n))/(c+d (x^n)))))^(1/q))]

Program code:

Int[u_^r_.*(e_.*(a_.+b_.*x_^n_.)/(c_+d_.*x_^n_.))^p_,x_Symbol] :=
  With[{q=Denominator[p]},
  q*e*(b*c-a*d)/n*Subst[Int[SimplifyIntegrand[x^(q*(p+1)-1)*(-a*e+c*x^q)^(1/n-1)/(b*e-d*x^q)^(1/n+1)*
    ReplaceAll[u,x->(-a*e+c*x^q)^(1/n)/(b*e-d*x^q)^(1/n)]^r,x],x],x,(e*(a+b*x^n)/(c+d*x^n))^(1/q)]] /;
FreeQ[{a,b,c,d,e},x] && PolynomialQ[u,x] && FractionQ[p] && IntegerQ[1/n] && IntegerQ[r]

6:  ∫(x^m)(Subscript[P, x]^r)(((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  when  (1/n)∈ℤ ∧ (m|r)∈ℤ

Derivation: Integration by substitution

Basis: If (1/n)∈ℤ ∧ m∈ℤ ∧ q∈(SuperPlus[ℤ]), then (x^m)F[x](((e ((a+b (x^n))/(c+d (x^n)))))^p)==((q e(b c-a d))/n)Subst[(( (x^(q(p+1)-1))(((-a e+c (x^q)))^(((m+1)/n)-1)))/(((b e-d (x^q)))^(((m+1)/n)+1)))F[(( (((-a e+c (x^q)))^(1/n)))/(((b e-d (x^q)))^(1/n)))],x,(((e ((a+b (x^n))/(c+d (x^n)))))^(1/q))](∂_x)(((e ((a+b (x^n))/(c+d (x^n)))))^(1/q))

Rule: If (1/n)∈ℤ ∧ (m|r)∈ℤ, let q=Denominator[p],  then

∫(x^m)(Subscript[P, x]^r)(((e ((a+b (x^n))/(c+d (x^n)))))^p)dx  ⟶  ((q e(b c-a d))/n) Subst[∫(( (x^(q(p+1)-1))(((-a e+c (x^q)))^(((m+1)/n)-1)))/(((b e-d (x^q)))^(((m+1)/n)+1)))((Subst[(Subscript[P, x]),x,(( (((-a e+c (x^q)))^(1/n)))/(((b e-d (x^q)))^(1/n)))])^r)dx,x,(((e ((a+b (x^n))/(c+d (x^n)))))^(1/q))]

Program code:

Int[x_^m_.*u_^r_.*(e_.*(a_.+b_.*x_^n_.)/(c_+d_.*x_^n_.))^p_,x_Symbol] :=
  With[{q=Denominator[p]},
  q*e*(b*c-a*d)/n*Subst[Int[SimplifyIntegrand[x^(q*(p+1)-1)*(-a*e+c*x^q)^((m+1)/n-1)/(b*e-d*x^q)^((m+1)/n+1)*
    ReplaceAll[u,x->(-a*e+c*x^q)^(1/n)/(b*e-d*x^q)^(1/n)]^r,x],x],x,(e*(a+b*x^n)/(c+d*x^n))^(1/q)]] /;
FreeQ[{a,b,c,d,e},x] && PolynomialQ[u,x] && FractionQ[p] && IntegerQ[1/n] && IntegersQ[m,r]

3:  ∫u (((a+(b/(c+d (x^n)))))^p)dx

Derivation: Algebraic expansion

Rule:

∫u (((a+(b/(c+d (x^n)))))^p)dx  ⟶  ∫u (((((b+a c+a d (x^n))/(c+d (x^n)))))^p)dx

Program code:

Int[u_.*(a_+b_./(c_+d_.*x_^n_))^p_,x_Symbol] :=
  Int[u*((b+a*c+a*d*x^n)/(c+d*x^n))^p,x] /;
FreeQ[{a,b,c,d,n,p},x]

4:  ∫u (((e (((a+b (x^n)))^q) (((c+d (x^n)))^r)))^p)dx

Derivation: Piecewise constant extraction

Basis: (∂_x)((((e (((a+b (x^n)))^q) (((c+d (x^n)))^r)))^p)/((((a+b (x^n)))^(p q)) (((c+d (x^n)))^(p r))))==0

Rule:

∫u (((e (((a+b (x^n)))^q) (((c+d (x^n)))^r)))^p)dx  ⟶  ((((e (((a+b (x^n)))^q) (((c+d (x^n)))^r)))^p)/((((a+b (x^n)))^(p q)) (((c+d (x^n)))^(p r)))) ∫u (((a+b (x^n)))^(p q)) (((c+d (x^n)))^(p r))dx

Program code:

Int[u_.*(e_.*(a_.+b_.*x_^n_.)^q_.*(c_+d_.*x_^n_)^r_.)^p_,x_Symbol] :=
  Simp[(e*(a+b*x^n)^q*(c+d*x^n)^r)^p/((a+b*x^n)^(p*q)*(c+d*x^n)^(p*r))]*
    Int[u*(a+b*x^n)^(p*q)*(c+d*x^n)^(p*r),x] /;
FreeQ[{a,b,c,d,e,n,p,q,r},x]

4.  ∫u (((a+b ((((c/x)))^n)))^p)dx

1:  ∫(((a+b ((((c/x)))^n)))^p)dx

Derivation: Integration by substitution

Basis: F[(c/x)]==-c Subst[((F[x] )/(x^2)),x,(c/x)](∂_x)(c/x)

Rule:

∫(((a+b ((((c/x)))^n)))^p)dx  ⟶  -c Subst[∫((((a+b (x^n)))^p)/(x^2))dx,x,(c/x)]

Program code:

Int[(a_.+b_.*(c_./x_)^n_)^p_,x_Symbol] :=
  -c*Subst[Int[(a+b*x^n)^p/x^2,x],x,c/x] /;
FreeQ[{a,b,c,n,p},x]

2.  ∫(((d x))^m)(((a+b ((((c/x)))^n)))^p)dx

1:  ∫(x^m)(((a+b ((((c/x)))^n)))^p)dx  when  m∈ℤ

Derivation: Integration by substitution

Basis: If  m∈ℤ, then (x^m)F[(c/x)]==-(c^(m+1)) Subst[((F[x] )/(x^(m+2))),x,(c/x)](∂_x)(c/x)

Rule: If  m∈ℤ, then

∫(x^m)(((a+b ((((c/x)))^n)))^p)dx  ⟶  -(c^(m+1))Subst[∫((((a+b (x^n)))^p)/(x^(m+2)))dx,x,(c/x)]

Program code:

Int[x_^m_.*(a_.+b_.*(c_./x_)^n_)^p_,x_Symbol] :=
  -c^(m+1)*Subst[Int[(a+b*x^n)^p/x^(m+2),x],x,c/x] /;
FreeQ[{a,b,c,n,p},x] && IntegerQ[m]

2:  ∫(((d x))^m)(((a+b ((((c/x)))^n)))^p)dx  when  m∉ℤ

Derivation: Piecewise constant extraction and integration by substitution

Basis: (∂_x)((((d x))^m) ((((c/x)))^m))==0

Basis: F[(c/x)]==-c Subst[((F[x] )/(x^2)),x,(c/x)](∂_x)(c/x)

Rule: If  m∉ℤ, then

∫(((d x))^m)(((a+b ((((c/x)))^n)))^p)dx  ⟶  (((d x))^m)((((c/x)))^m)∫((((a+b ((((c/x)))^n)))^p)/((((c/x)))^m))dx  ⟶  -c (((d x))^m)((((c/x)))^m)Subst[∫((((a+b (x^n)))^p)/(x^(m+2)))dx,x,(c/x)]

Program code:

Int[(d_.*x_)^m_*(a_.+b_.*(c_./x_)^n_)^p_,x_Symbol] :=
  -c*(d*x)^m*(c/x)^m*Subst[Int[(a+b*x^n)^p/x^(m+2),x],x,c/x] /;
FreeQ[{a,b,c,d,m,n,p},x] && Not[IntegerQ[m]]

5.  ∫u (((a+b ((((d/x)))^n)+c ((((d/x)))^(2n))))^p)dx

1:  ∫(((a+b ((((d/x)))^n)+c ((((d/x)))^(2n))))^p)dx

Derivation: Integration by substitution

Basis: F[(d/x)]==-d Subst[((F[x] )/(x^2)),x,(d/x)](∂_x)(d/x)

Rule:

∫(((a+b ((((d/x)))^n)+c ((((d/x)))^(2n))))^p)dx  ⟶  -d Subst[∫((((a+b (x^n)+c (x^(2n))))^p)/(x^2))dx,x,(d/x)]

Program code:

Int[(a_.+b_.*(d_./x_)^n_+c_.*(d_./x_)^n2_.)^p_,x_Symbol] :=
  -d*Subst[Int[(a+b*x^n+c*x^(2*n))^p/x^2,x],x,d/x] /;
FreeQ[{a,b,c,d,n,p},x] && EqQ[n2,2*n]

2.  ∫(((e x))^m) (((a+b ((((d/x)))^n)+c ((((d/x)))^(2 n))))^p)dx

1:  ∫(x^m)(((a+b ((((d/x)))^n)+c ((((d/x)))^(2 n))))^p)dx  when  m∈ℤ

Derivation: Integration by substitution

Basis: If  m∈ℤ, then (x^m)F[(d/x)]==-(d^(m+1)) Subst[((F[x] )/(x^(m+2))),x,(d/x)](∂_x)(d/x)

Rule: If  m∈ℤ, then

∫(x^m)(((a+b ((((d/x)))^n)+c ((((d/x)))^(2 n))))^p)dx  ⟶  -(d^(m+1))Subst[∫((((a+b (x^n)+c (x^(2 n))))^p)/(x^(m+2)))dx,x,(d/x)]

Program code:

Int[x_^m_.*(a_+b_.*(d_./x_)^n_+c_.*(d_./x_)^n2_.)^p_,x_Symbol] :=
  -d^(m+1)*Subst[Int[(a+b*x^n+c*x^(2*n))^p/x^(m+2),x],x,d/x] /;
FreeQ[{a,b,c,d,n,p},x] && EqQ[n2,2*n] && IntegerQ[m]

2:  ∫(((e x))^m)(((a+b ((((d/x)))^n)+c ((((d/x)))^(2 n))))^p)dx  when  m∉ℤ

Derivation: Piecewise constant extraction and integration by substitution

Basis: (∂_x)((((e x))^m) ((((d/x)))^m))==0

Basis: F[(d/x)]==-d Subst[((F[x] )/(x^2)),x,(d/x)](∂_x)(d/x)

Rule: If  m∉ℤ, then

∫(((e x))^m)(((a+b ((((d/x)))^n)+c ((((d/x)))^(2 n))))^p)dx  ⟶  (((e x))^m)((((d/x)))^m)∫((((a+b ((((d/x)))^n)+c ((((d/x)))^(2 n))))^p)/((((d/x)))^m))dx  ⟶  -d (((e x))^m)((((d/x)))^m)Subst[∫((((a+b (x^n)+c (x^(2 n))))^p)/(x^(m+2)))dx,x,(d/x)]

Program code:

Int[(e_.*x_)^m_*(a_+b_.*(d_./x_)^n_+c_.*(d_./x_)^n2_.)^p_,x_Symbol] :=
  -d*(e*x)^m*(d/x)^m*Subst[Int[(a+b*x^n+c*x^(2*n))^p/x^(m+2),x],x,d/x] /;
FreeQ[{a,b,c,d,e,m,n,p},x] && EqQ[n2,2*n] && Not[IntegerQ[m]]

6.  ∫u (((a+b ((((d/x)))^n)+c (x^(-2n))))^p)dx  when  2 n∈ℤ

1:  ∫(((a+b ((((d/x)))^n)+c (x^(-2n))))^p)dx  when  2 n∈ℤ

Derivation: Integration by substitution

Basis: F[(d/x)]==-d Subst[((F[x] )/(x^2)),x,(d/x)](∂_x)(d/x)

Rule: If  2 n∈ℤ, then

∫(((a+b ((((d/x)))^n)+c (x^(-2n))))^p)dx  ⟶  ∫(((a+b ((((d/x)))^n)+(c/(d^(2 n))) ((((d/x)))^(2 n))))^p)dx  ⟶  -d Subst[∫((((a+b (x^n)+(c/(d^(2 n))) (x^(2 n))))^p)/(x^2))dx,x,(d/x)]

Program code:

Int[(a_.+b_.*(d_./x_)^n_+c_.*x_^n2_.)^p_,x_Symbol] :=
  -d*Subst[Int[(a+b*x^n+c/d^(2*n)*x^(2*n))^p/x^2,x],x,d/x] /;
FreeQ[{a,b,c,d,n,p},x] && EqQ[n2,-2*n] && IntegerQ[2*n]

2.  ∫(((e x))^m) (((a+b ((((d/x)))^n)+c (x^(-2n))))^p)dx  when  2 n∈ℤ

1:  ∫(x^m) (((a+b ((((d/x)))^n)+c (x^(-2n))))^p)dx  when  2 n∈ℤ ∧ m∈ℤ

Derivation: Integration by substitution

Basis: If  m∈ℤ, then (x^m)F[(d/x)]==-(d^(m+1)) Subst[((F[x] )/(x^(m+2))),x,(d/x)](∂_x)(d/x)

Rule: If  2 n∈ℤ ∧ m∈ℤ, then

∫(x^m) (((a+b ((((d/x)))^n)+c (x^(-2n))))^p)dx  ⟶  ∫(x^m) (((a+b ((((d/x)))^n)+(c/(d^(2 n))) ((((d/x)))^(2 n))))^p)dx  ⟶  -(d^(m+1))Subst[∫((((a+b (x^n)+(c/(d^(2 n))) (x^(2 n))))^p)/(x^(m+2)))dx,x,(d/x)]

Program code:

Int[x_^m_.*(a_+b_.*(d_./x_)^n_+c_.*x_^n2_.)^p_,x_Symbol] :=
  -d^(m+1)*Subst[Int[(a+b*x^n+c/d^(2*n)*x^(2*n))^p/x^(m+2),x],x,d/x] /;
FreeQ[{a,b,c,d,n,p},x] && EqQ[n2,-2*n] && IntegerQ[2*n] && IntegerQ[m]

2:  ∫(((e x))^m) (((a+b ((((d/x)))^n)+c (x^(-2n))))^p)dx  when  2 n∈ℤ ∧ m∉ℤ

Derivation: Piecewise constant extraction and integration by substitution

Basis: (∂_x)((((e x))^m) ((((d/x)))^m))==0

Basis: F[(d/x)]==-d Subst[((F[x] )/(x^2)),x,(d/x)](∂_x)(d/x)

Rule: If  2 n∈ℤ ∧ m∉ℤ, then

∫(((e x))^m) (((a+b ((((d/x)))^n)+c (x^(-2n))))^p)dx  ⟶  (((e x))^m) ((((d/x)))^m)∫((((a+b ((((d/x)))^n)+(c/(d^(2 n))) ((((d/x)))^(2 n))))^p)/((((d/x)))^m))dx  ⟶  -d (((e x))^m) ((((d/x)))^m)Subst[∫((((a+b (x^n)+(c/(d^(2 n))) (x^(2 n))))^p)/(x^(m+2)))dx,x,(d/x)]

Program code:

Int[(e_.*x_)^m_*(a_+b_.*(d_./x_)^n_+c_.*x_^n2_.)^p_,x_Symbol] :=
  -d*(e*x)^m*(d/x)^m*Subst[Int[(a+b*x^n+c/d^(2*n)*x^(2*n))^p/x^(m+2),x],x,d/x] /;
FreeQ[{a,b,c,d,e,n,p},x] && EqQ[n2,-2*n] && Not[IntegerQ[m]] && IntegerQ[2*n]

7:  ∫u (((e(((a+b (x^n)))^r)))^p) (((f(((c+d (x^n)))^s)))^q)dx

Derivation: Piecewise constant extraction

Basis: (∂_x)(((((e(((a+b (x^n)))^r)))^p) (((f(((c+d (x^n)))^s)))^q))/((((a+b (x^n)))^(p r)) (((c+d (x^n)))^(q s))))==0

Rule:

∫u (((e(((a+b (x^n)))^r)))^p) (((f(((c+d (x^n)))^s)))^q)dx  ⟶  (((((e(((a+b (x^n)))^r)))^p) (((f(((c+d (x^n)))^s)))^q))/((((a+b (x^n)))^(p r)) (((c+d (x^n)))^(q s))))∫u (((a+b (x^n)))^(p r)) (((c+d (x^n)))^(q s))dx

Program code:

Int[u_.*(e_.*(a_+b_.*x_^n_.)^r_.)^p_*(f_.*(c_+d_.*x_^n_.)^s_)^q_,x_Symbol] :=
  (e*(a+b*x^n)^r)^p*(f*(c+d*x^n)^s)^q/((a+b*x^n)^(p*r)*(c+d*x^n)^(q*s))*
    Int[u*(a+b*x^n)^(p*r)*(c+d*x^n)^(q*s),x] /;
FreeQ[{a,b,c,d,e,f,n,p,q,r,s},x]

Rules for normalizing algebraic functions

1.  Binomial products

1.  Linear

1:  ∫(u^m)dx  when  u==a+b x

Derivation: Algebraic normalization

Rule: If  u==a+b x, then

∫(u^m)dx  ⟶  ∫(((a+b x))^m)dx

Program code:

Int[u_^m_,x_Symbol] :=
  Int[ExpandToSum[u,x]^m,x] /;
FreeQ[m,x] && LinearQ[u,x] && Not[LinearMatchQ[u,x]]

2:  ∫(u^m)(v^n)dx  when  u==a+b x ∧ v==c+d x

Derivation: Algebraic normalization

Rule: If  u==a+b x ∧ v==c+d x, then

∫(u^m)(v^n)dx  ⟶  ∫(((a+b x))^m) (((c+d x))^n)dx

Program code:

Int[u_^m_.*v_^n_.,x_Symbol] :=
  Int[ExpandToSum[u,x]^m*ExpandToSum[v,x]^n,x] /;
FreeQ[{m,n},x] && LinearQ[{u,v},x] && Not[LinearMatchQ[{u,v},x]]

3:  ∫(u^m)(v^n)(w^p)dx  when  u==a+b x ∧ v==c+d x ∧ w==e+f x

Derivation: Algebraic normalization

Rule: If  u==a+b x ∧ v==c+d x ∧ w==e+f x, then

∫(u^m)(v^n)(w^p)dx  ⟶  ∫(((a+b x))^m) (((c+d x))^n)(((e+f x))^p)dx

Program code:

Int[u_^m_.*v_^n_.*w_^p_.,x_Symbol] :=
  Int[ExpandToSum[u,x]^m*ExpandToSum[v,x]^n*ExpandToSum[w,x]^p,x] /;
FreeQ[{m,n,p},x] && LinearQ[{u,v,w},x] && Not[LinearMatchQ[{u,v,w},x]]

4:  ∫(u^m)(v^n)(w^p)(z^q)dx  when  u==a+b x ∧ v==c+d x ∧ w==e+f x ∧ z==g+h x

Derivation: Algebraic normalization

Rule: If  u==a+b x ∧ v==c+d x ∧ w==e+f x ∧ z==g+h x, then

∫(u^m)(v^n)(w^p)(z^q)dx  ⟶  ∫(((a+b x))^m) (((c+d x))^n)(((e+f x))^p)(((g+h x))^q)dx

Program code:

Int[u_^m_.*v_^n_.*w_^p_.*z_^q_.,x_Symbol] :=
  Int[ExpandToSum[u,x]^m*ExpandToSum[v,x]^n*ExpandToSum[w,x]^p*ExpandToSum[z,x]^q,x] /;
FreeQ[{m,n,p,q},x] && LinearQ[{u,v,w,z},x] && Not[LinearMatchQ[{u,v,w,z},x]]

3.  General

1:  ∫(u^p)dx  when  u==a+b (x^n)

Derivation: Algebraic normalization

Rule: If  u==a+b (x^n), then

∫(u^p)dx  ⟶  ∫(((a+b (x^n)))^p)dx

Program code:

Int[u_^p_,x_Symbol] :=
  Int[ExpandToSum[u,x]^p,x] /;
FreeQ[p,x] && BinomialQ[u,x] && Not[BinomialMatchQ[u,x]]

2:  ∫(((c x))^m)(u^p)dx  when  u==a+b (x^n)

Derivation: Algebraic normalization

Rule: If  u==a+b (x^n), then

∫(((c x))^m) (u^p)dx  ⟶  ∫(((c x))^m) (((a+b (x^n)))^p)dx

Program code:

Int[(c_.*x_)^m_.*u_^p_.,x_Symbol] :=
  Int[(c*x)^m*ExpandToSum[u,x]^p,x] /;
FreeQ[{c,m,p},x] && BinomialQ[u,x] && Not[BinomialMatchQ[u,x]]

3:  ∫(u^p)(v^q)dx  when  u==a+b (x^n) ∧ v==c+d (x^n)

Derivation: Algebraic normalization

Rule: If  u==a+b (x^n) ∧ v==c+d (x^n), then

∫(u^p)(v^q)dx  ⟶  ∫(((a+b (x^n)))^p) (((c+d (x^n)))^q)dx

Program code:

Int[u_^p_.*v_^q_.,x_Symbol] :=
  Int[ExpandToSum[u,x]^p*ExpandToSum[v,x]^q,x] /;
FreeQ[{p,q},x] && BinomialQ[{u,v},x] && EqQ[BinomialDegree[u,x]-BinomialDegree[v,x],0] && Not[BinomialMatchQ[{u,v},x]]

4:  ∫(((e x))^m)(u^p)(v^q)dx  when  u==a+b (x^n) ∧ v==c+d (x^n)

Derivation: Algebraic normalization

Rule: If  u==a+b (x^n) ∧ v==c+d (x^n), then

∫(((e x))^m)(u^p)(v^q)dx  ⟶  ∫(((e x))^m) (((a+b (x^n)))^p) (((c+d (x^n)))^q)dx

Program code:

Int[(e_.*x_)^m_.*u_^p_.*v_^q_.,x_Symbol] :=
  Int[(e*x)^m*ExpandToSum[u,x]^p*ExpandToSum[v,x]^q,x] /;
FreeQ[{e,m,p,q},x] && BinomialQ[{u,v},x] && EqQ[BinomialDegree[u,x]-BinomialDegree[v,x],0] && Not[BinomialMatchQ[{u,v},x]]

5:  ∫(u^m)(v^p)(w^q)dx  when  u==a+b (x^n) ∧ v==c+d (x^n) ∧ w==e+f (x^n)

Derivation: Algebraic normalization

Rule: If  u==a+b (x^n) ∧ v==c+d (x^n) ∧ w==e+f (x^n), then

∫(u^m)(v^p)(w^q)dx  ⟶  ∫(((a+b (x^n)))^m)(((c+d (x^n)))^p)(((e+f (x^n)))^q)dx

Program code:

Int[u_^m_.*v_^p_.*w_^q_.,x_Symbol] :=
  Int[ExpandToSum[u,x]^m*ExpandToSum[v,x]^p*ExpandToSum[w,x]^q,x] /;
FreeQ[{m,p,q},x] && BinomialQ[{u,v,w},x] && EqQ[BinomialDegree[u,x]-BinomialDegree[v,x],0] && 
  EqQ[BinomialDegree[u,x]-BinomialDegree[w,x],0] && Not[BinomialMatchQ[{u,v,w},x]]

6:  ∫(((g x))^m)(u^p)(v^q) (z^r)dx  when  u==a+b (x^n) ∧ v==c+d (x^n) ∧ z==e+f (x^n)

Derivation: Algebraic normalization

Rule: If  u==a+b (x^n) ∧ v==c+d (x^n) ∧ z==e+f (x^n), then

∫(((g x))^m) (u^p) (v^q) (z^r)dx  ⟶  ∫(((g x))^m)(((a+b (x^n)))^p) (((c+d (x^n)))^q) (((e+f (x^n)))^r)dx

Program code:

Int[(g_.*x_)^m_.*u_^p_.*v_^q_.*z_^r_.,x_Symbol] :=
  Int[(g*x)^m*ExpandToSum[u,x]^p*ExpandToSum[v,x]^q*ExpandToSum[z,x]^r,x] /;
FreeQ[{g,m,p,q,r},x] && BinomialQ[{u,v,z},x] && EqQ[BinomialDegree[u,x]-BinomialDegree[v,x],0] && 
  EqQ[BinomialDegree[u,x]-BinomialDegree[z,x],0] && Not[BinomialMatchQ[{u,v,z},x]]

7:  ∫(((c x))^m) (Subscript[P, q])[x] (u^p)dx  when  u==a+b (x^n)

Derivation: Algebraic normalization

Rule: If  u==a+b (x^n), then

∫(((c x))^m) (Subscript[P, q])[x] (u^p)dx  ⟶  ∫(((c x))^m) (Subscript[P, q])[x] (((a+b (x^n)))^p)dx

Program code:

Int[(c_.*x_)^m_.*Pq_*u_^p_.,x_Symbol] :=
  Int[(c*x)^m*Pq*ExpandToSum[u,x]^p,x] /;
FreeQ[{c,m,p},x] && PolyQ[Pq,x] && BinomialQ[u,x] && Not[BinomialMatchQ[u,x]]

4.  Improper

1:  ∫(u^p)dx  when  u==a (x^j)+b (x^n)

Derivation: Algebraic normalization

Rule: If  u==a (x^j)+b (x^n), then

∫(u^p)dx  ⟶  ∫(((a (x^j)+b (x^n)))^p)dx

Program code:

Int[u_^p_,x_Symbol] :=
  Int[ExpandToSum[u,x]^p,x] /;
FreeQ[p,x] && GeneralizedBinomialQ[u,x] && Not[GeneralizedBinomialMatchQ[u,x]]

2:  ∫(((c x))^m)(u^p)dx  when  u==a (x^j)+b (x^n)

Derivation: Algebraic normalization

Rule: If  u==a (x^j)+b (x^n), then

∫(((c x))^m)(u^p)dx  ⟶  ∫(((c x))^m)(((a (x^j)+b (x^n)))^p)dx

Program code:

Int[(c_.*x_)^m_.*u_^p_.,x_Symbol] :=
  Int[(c*x)^m*ExpandToSum[u,x]^p,x] /;
FreeQ[{c,m,p},x] && GeneralizedBinomialQ[u,x] && Not[GeneralizedBinomialMatchQ[u,x]]

2  Trinomial products

1.  Quadratic

1:  ∫(u^p)dx  when  u==a+b x+c (x^2)

Derivation: Algebraic normalization

Rule: If  u==a+b x+c (x^2), then

∫(u^p)dx  ⟶  ∫(((a+b x+c (x^2)))^p)dx

Program code:

Int[u_^p_,x_Symbol] :=
  Int[ExpandToSum[u,x]^p,x] /;
FreeQ[p,x] && QuadraticQ[u,x] && Not[QuadraticMatchQ[u,x]]

2:  ∫(u^m)(v^p)dx  when  u==d+e x ∧ v==a+b x+c (x^2)

Derivation: Algebraic normalization

Rule: If  u==d+e x ∧ v==a+b x+c (x^2), then

∫(u^m)(v^p)dx  ⟶  ∫(((d+e x))^m) (((a+b x+c (x^2)))^p)dx

Program code:

Int[u_^m_.*v_^p_.,x_Symbol] :=
  Int[ExpandToSum[u,x]^m*ExpandToSum[v,x]^p,x] /;
FreeQ[{m,p},x] && LinearQ[u,x] && QuadraticQ[v,x] && Not[LinearMatchQ[u,x] && QuadraticMatchQ[v,x]]

3:  ∫(u^m)(v^n)(w^p)dx  when  u==d+e x ∧ v==f+g x ∧ w==a+b x+c (x^2)

Derivation: Algebraic normalization

Rule: If  u==d+e x ∧ v==f+g x ∧ w==a+b x+c (x^2), then

∫(u^m)(v^n)(w^p)dx  ⟶  ∫(((d+e x))^m) (((f+g x))^n)(((a+b x+c (x^2)))^p)dx

Program code:

Int[u_^m_.*v_^n_.*w_^p_.,x_Symbol] :=
  Int[ExpandToSum[u,x]^m*ExpandToSum[v,x]^n*ExpandToSum[w,x]^p,x] /;
FreeQ[{m,n,p},x] && LinearQ[{u,v},x] && QuadraticQ[w,x] && Not[LinearMatchQ[{u,v},x] && QuadraticMatchQ[w,x]]

4:  ∫(u^p)(v^q)dx  when  u==a+b x+c (x^2) ∧ v==d+e x+f (x^2)

Derivation: Algebraic normalization

Rule: If  u==a+b x+c (x^2) ∧ v==d+e x+f (x^2), then

∫(u^p)(v^q)dx  ⟶  ∫(((a+b x+c (x^2)))^p) (((d+e x+f (x^2)))^q)dx

Program code:

Int[u_^p_.*v_^q_.,x_Symbol] :=
  Int[ExpandToSum[u,x]^p*ExpandToSum[v,x]^q,x] /;
FreeQ[{p,q},x] && QuadraticQ[{u,v},x] && Not[QuadraticMatchQ[{u,v},x]]

5:  ∫(z^m) (u^p)(v^q)dx  when  z==g+h x ∧ u==a+b x+c (x^2) ∧ v==d+e x+f (x^2)

Derivation: Algebraic normalization

Note: This normalization needs to be done before trying polynomial integration rules.

Rule: If  z==g+h x ∧ u==a+b x+c (x^2) ∧ v==d+e x+f (x^2), then

∫(z^m) (u^p)(v^q)dx  ⟶  ∫(((g+h x))^m) (((a+b x+c (x^2)))^p) (((d+e x+f (x^2)))^q)dx

Program code:

Int[z_^m_.*u_^p_.*v_^q_.,x_Symbol] :=
  Int[ExpandToSum[z,x]^m*ExpandToSum[u,x]^p*ExpandToSum[v,x]^q,x] /;
FreeQ[{m,p,q},x] && LinearQ[z,x] && QuadraticQ[{u,v},x] && Not[LinearMatchQ[z,x] && QuadraticMatchQ[{u,v},x]]

6:  ∫(Subscript[P, q])[x] (u^p)dx  when  u==a+b x+c (x^2)

Derivation: Algebraic normalization

Rule: If  u==a+b x+c (x^2), then

∫(Subscript[P, q])[x] (u^p)dx  ⟶  ∫(Subscript[P, q])[x] (((a+b x+c (x^2)))^p)dx

Program code:

Int[Pq_*u_^p_.,x_Symbol] :=
  Int[Pq*ExpandToSum[u,x]^p,x] /;
FreeQ[p,x] && PolyQ[Pq,x] && QuadraticQ[u,x] && Not[QuadraticMatchQ[u,x]]

7:  ∫(u^m) (Subscript[P, q])[x] (v^p)dx  when  u==d+e x ∧ v==a+b x+c (x^2)

Derivation: Algebraic normalization

Rule: If  u==d+e x ∧ v==a+b x+c (x^2), then

∫(u^m) (Subscript[P, q])[x] (v^p)dx  ⟶  ∫(((d+e x))^m) (Subscript[P, q])[x] (((a+b x+c (x^2)))^p)dx

Program code:

Int[u_^m_.*Pq_*v_^p_.,x_Symbol] :=
  Int[ExpandToSum[u,x]^m*Pq*ExpandToSum[v,x]^p,x] /;
FreeQ[{m,p},x] && PolyQ[Pq,x] && LinearQ[u,x] && QuadraticQ[v,x] && Not[LinearMatchQ[u,x] && QuadraticMatchQ[v,x]]

3.  General

1:  ∫(u^p)dx  when  u==a+b (x^n)+c (x^(2 n))

Derivation: Algebraic normalization

Rule: If  u==a+b (x^n)+c (x^(2 n)), then

∫(u^p)dx  ⟶  ∫(((a+b (x^n)+c (x^(2 n))))^p)dx

Program code:

Int[u_^p_,x_Symbol] :=
  Int[ExpandToSum[u,x]^p,x] /;
FreeQ[p,x] && TrinomialQ[u,x] && Not[TrinomialMatchQ[u,x]]

2:  ∫(((d x))^m) (u^p)dx  when  u==a+b (x^n)+c (x^(2 n))

Derivation: Algebraic normalization

Rule: If  u==a+b (x^n)+c (x^(2 n)), then

∫(((d x))^m) (u^p)dx  ⟶  ∫(((d x))^m) (((a+b (x^n)+c (x^(2 n))))^p)dx

Program code:

Int[(d_.*x_)^m_.*u_^p_.,x_Symbol] :=
  Int[(d*x)^m*ExpandToSum[u,x]^p,x] /;
FreeQ[{d,m,p},x] && TrinomialQ[u,x] && Not[TrinomialMatchQ[u,x]]

3:  ∫(u^q)(v^p)dx  when  u==d+e (x^n)∧ v==a+b (x^n)+c (x^(2 n))

Derivation: Algebraic normalization

Rule: If  u==d+e (x^n)∧ v==a+b (x^n)+c (x^(2 n)), then

∫(u^q)(v^p)dx  ⟶  ∫(((d+e (x^n)))^q)(((a+b (x^n)+c (x^(2 n))))^p)dx

Program code:

Int[u_^q_.*v_^p_.,x_Symbol] :=
  Int[ExpandToSum[u,x]^q*ExpandToSum[v,x]^p,x] /;
FreeQ[{p,q},x] && BinomialQ[u,x] && TrinomialQ[v,x] && Not[BinomialMatchQ[u,x] && TrinomialMatchQ[v,x]]

Int[u_^q_.*v_^p_.,x_Symbol] :=
  Int[ExpandToSum[u,x]^q*ExpandToSum[v,x]^p,x] /;
FreeQ[{p,q},x] && BinomialQ[u,x] && BinomialQ[v,x] && Not[BinomialMatchQ[u,x] && BinomialMatchQ[v,x]]

4:  ∫(((f x))^m)(z^q) (u^p)dx  when  z==d+e (x^n)∧ u==a+b (x^n)+c (x^(2 n))

Derivation: Algebraic normalization

Rule: If  z==d+e (x^n)∧ u==a+b (x^n)+c (x^(2 n)), then

∫(((f x))^m)(z^q) (u^p)dx  ⟶  ∫(((f x))^m) (((d+e (x^n)))^q) (((a+b (x^n)+c (x^(2 n))))^p)dx

Program code:

Int[(f_.*x_)^m_.*z_^q_.*u_^p_.,x_Symbol] :=
  Int[(f*x)^m*ExpandToSum[z,x]^q*ExpandToSum[u,x]^p,x] /;
FreeQ[{f,m,p,q},x] && BinomialQ[z,x] && TrinomialQ[u,x] && Not[BinomialMatchQ[z,x] && TrinomialMatchQ[u,x]]

Int[(f_.*x_)^m_.*z_^q_.*u_^p_.,x_Symbol] :=
  Int[(f*x)^m*ExpandToSum[z,x]^q*ExpandToSum[u,x]^p,x] /;
FreeQ[{f,m,p,q},x] && BinomialQ[z,x] && BinomialQ[u,x] && Not[BinomialMatchQ[z,x] && BinomialMatchQ[u,x]]

5:  ∫(Subscript[P, q])[x] (u^p)dx  when  u==a+b (x^n)+c (x^(2 n))

Derivation: Algebraic normalization

Rule: If  u==a+b (x^n)+c (x^(2 n)), then

∫(Subscript[P, q])[x] (u^p)dx  ⟶  ∫(Subscript[P, q])[x] (((a+b (x^n)+c (x^(2 n))))^p)dx

Program code:

Int[Pq_*u_^p_.,x_Symbol] :=
  Int[Pq*ExpandToSum[u,x]^p,x] /;
FreeQ[p,x] && PolyQ[Pq,x] && TrinomialQ[u,x] && Not[TrinomialMatchQ[u,x]]

6:  ∫(((d x))^m) (Subscript[P, q])[x] (u^p)dx  when  u==a+b (x^n)+c (x^(2 n))

Derivation: Algebraic normalization

Rule: If  u==a+b (x^n)+c (x^(2 n)), then

∫(((d x))^m) (Subscript[P, q])[x] (u^p)dx  ⟶  ∫(((d x))^m) (Subscript[P, q])[x] (((a+b (x^n)+c (x^(2 n))))^p)dx

Program code:

Int[(d_.*x_)^m_.*Pq_*u_^p_.,x_Symbol] :=
  Int[(d*x)^m*Pq*ExpandToSum[u,x]^p,x] /;
FreeQ[{d,m,p},x] && PolyQ[Pq,x] && TrinomialQ[u,x] && Not[TrinomialMatchQ[u,x]]

4.  Improper

1:  ∫(u^p)dx  when  u==a (x^q)+b (x^n)+c (x^(2n-q))

Derivation: Algebraic normalization

Rule: If  u==a (x^q)+b (x^n)+c (x^(2n-q)), then

∫(u^p)dx  ⟶  ∫(((a (x^q)+b (x^n)+c (x^(2n-q))))^p)dx

Program code:

Int[u_^p_,x_Symbol] :=
  Int[ExpandToSum[u,x]^p,x] /;
FreeQ[p,x] && GeneralizedTrinomialQ[u,x] && Not[GeneralizedTrinomialMatchQ[u,x]]

2:  ∫(((d x))^m) (u^p)dx  when  u==a (x^q)+b (x^n)+c (x^(2n-q))

Derivation: Algebraic normalization

Rule: If  u==a (x^q)+b (x^n)+c (x^(2n-q)), then

∫(((d x))^m) (u^p)dx  ⟶  ∫(((d x))^m)(((a (x^q)+b (x^n)+c (x^(2n-q))))^p)dx

Program code:

Int[(d_.*x_)^m_.*u_^p_.,x_Symbol] :=
  Int[(d*x)^m*ExpandToSum[u,x]^p,x] /;
FreeQ[{d,m,p},x] && GeneralizedTrinomialQ[u,x] && Not[GeneralizedTrinomialMatchQ[u,x]]

3:  ∫z (u^p)dx  when  z==A+B (x^(n-q)) ∧ u==a (x^q)+b (x^n)+c (x^(2n-q))

Derivation: Algebraic normalization

Rule: If  z==A+B (x^(n-q)) ∧ u==a (x^q)+b (x^n)+c (x^(2n-q)), then

∫z (u^p)dx  ⟶  ∫(A+B (x^(n-q)))(((a (x^q)+b (x^n)+c (x^(2n-q))))^p)dx

Program code:

Int[z_*u_^p_.,x_Symbol] :=
  Int[ExpandToSum[z,x]*ExpandToSum[u,x]^p,x] /;
FreeQ[p,x] && BinomialQ[z,x] && GeneralizedTrinomialQ[u,x] && 
  EqQ[BinomialDegree[z,x]-GeneralizedTrinomialDegree[u,x],0] && Not[BinomialMatchQ[z,x] && GeneralizedTrinomialMatchQ[u,x]]

4:  ∫(((f x))^m)z (u^p)dx  when  z==A+B (x^(n-q)) ∧ u==a (x^q)+b (x^n)+c (x^(2n-q))

Derivation: Algebraic normalization

Rule: If  z==A+B (x^(n-q)) ∧ u==a (x^q)+b (x^n)+c (x^(2n-q)), then

∫(((f x))^m)z (u^p)dx  ⟶  ∫(((f x))^m)(A+B (x^(n-q)))(((a (x^q)+b (x^n)+c (x^(2n-q))))^p)dx

Program code:

Int[(f_.*x_)^m_.*z_*u_^p_.,x_Symbol] :=
  Int[(f*x)^m*ExpandToSum[z,x]*ExpandToSum[u,x]^p,x] /;
FreeQ[{f,m,p},x] && BinomialQ[z,x] && GeneralizedTrinomialQ[u,x] && 
  EqQ[BinomialDegree[z,x]-GeneralizedTrinomialDegree[u,x],0] && Not[BinomialMatchQ[z,x] && GeneralizedTrinomialMatchQ[u,x]]